// ### 要求
// - 请使用 `Typescript` 完成 `base/src/index.ts` 中的函数，并定义好相关 TS 类型。（60分）
// - 单元测试覆盖，包含上述用例。（20分）
// - 配置 eslint 和 prettier。（10分）
// - 配置 pre-commit 和 commitlint。（10分）
// - 以 NestJS 为框架，为此功能提供一个 post api（bonus）

export interface IStorage {
  number: number;
  unit: string;
}

export function formatStorageNumberToObj(
  size: number,
  decimal: number = 0
): IStorage {
  const units = ['B', 'KB', "MB","GB", "TB"];

  const result: IStorage = {
    number: size,
    unit: units.shift() as string
  }

  while((result.number / 1024) >= 1) {
    result.number = result.number / 1024;
    result.unit = units.shift() as string
  }

  result.number = +result.number.toFixed(decimal)


  return result
}

formatStorageNumberToObj(1024, 0);
formatStorageNumberToObj(1048576, 2);
formatStorageNumberToObj(1248576, 2);

// {
//   number: 1
//   unit: 'KB'
// }
// {
//   number: 1
//   unit: 'MB'
// }
// {
//   number: 1.19
//   unit: 'MB'
// }

// ### 输入

// 输入是两个纯数字参数：
// 第一位参数：容量 Byte 大小，如 1024，1048576，1248576
// 第二位参数：取几位小数，默认为0

// ### 输出

// 输出是一个 包含单位 的对象格式，如：
// ```typescript
// {
//   number: 1.4
//   unit: 'TB'
// }
// ```

// 如果输入是 1024, 0

// 那么输出是
// ```typescript
// {
//   number: 1
//   unit: 'KB'
// }
// ```

// 如果输入是 1048576, 2

// 那么输出是
// ```typescript
// {
//   number: 1
//   unit: 'MB'
// }
// ```

// 如果输入是 1248576, 2

// 那么输出是
// ```typescript
// {
//   number: 1.19
//   unit: 'MB'
// }
// ```
